/// 两个有序数组的交集
// 如果没有其他条件，那么二重循环即可

/// 本题目是有序数组，那么这个条件一定是有用的。
/**
    1. 两个指针，如果a[i] = a[j],这个是交集，i++,j++
    2. 如果a[i]<a[j],i++
    3. 如果a[i]>a[j] , j++
    4. 直到其中一个扫描结束为止
*/
#include <iostream>
#include <vector>
using namespace std;

void getIntersection(int arr1[],int len1,int arr2[],int len2,vector<int> &v)
{
    int i=0,j=0;
    while(i<len1 && j<len2)
    {
        if(arr1[i] == arr2[j])
        {
            v.push_back(arr1[i]);
            i++;
            j++;
        }
        if(arr1[i]<arr2[j])
        {
            i++;
        }
        if(arr1[i]>arr2[j])
        {
            j++;
        }
    }
}

void show(vector<int> &v)
{
    //迭代器
    for(vector<int>::iterator it = v.begin();it!=v.end();it++)
    {
        cout<<*it<<",";
    }
    cout<<endl;
}
int main()
{
    int arr1[5] = {2,5,6,8,9};
    int arr2[5] = {1,5,6,7,8};
    vector<int> v;
    getIntersection(arr1,5,arr2,5,v);
    show(v);
    system("pause");
    return 0;
}
